package utils

import (
	"strings"
	"regexp"
)

const (
	English string = "^[a-zA-Z]+$"
	Chinese string = "^[\u4E00-\u9FA5]+$"
	ChineseAndEnglish string = "^[a-zA-Z\u4e00-\u9fa5]+$"
	Email  string = `[\w!#$%&'*+/=?^_{|}~-]+(?:\.[\w!#$%&'*+/=?^_{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?`
	Url string = `^-?[1-9]\d*$`
	Phone string = `^(1[3|4|5|8][0-9]\d{4,8})$`
)

var (
	regEnglish = regexp.MustCompile(English)
	regChinese = regexp.MustCompile(Chinese)
	regChineseAndEnglish = regexp.MustCompile(ChineseAndEnglish)
	regEmail = regexp.MustCompile(Email)
	regUrl = regexp.MustCompile(Url)
	regPhone = regexp.MustCompile(Phone)
)


/**
清理前后空格
 */
func TrimSpace(str string) string {
	return  strings.Trim(str, " ")
}

/**
全为英文字符
 */
func IsEnglish(str string) bool {
	return regEnglish.MatchString(str)
}

/**
全中文
 */
func IsChinese(str string) bool {
	return regChinese.MatchString(str)
}

/**
中文和英文
 */
func IsEnglishAndChinese(str string) bool {
	return regChineseAndEnglish.MatchString(str)
}

/**
email
 */
func IsEmail(str string) bool {
	return regEmail.MatchString(str)
}

/**
url
 */
func IsUrl(str string) bool  {
	return regUrl.MatchString(str)
}

/**
phone 电话号码
 */
func IsPhone(str string) bool  {
	return regPhone.MatchString(str)
}
